#pragma once
#include <string>
#include <map>
namespace BasicSkinView
{
	enum ENS_FORMAT_TYPE
	{
		ENS_FORMAT_SINGLE_LEFT = DT_LEFT|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS,
		ENS_FORMAT_SINGLE_CENTER = DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS,
		ENS_FORMAT_SINGLE_RIGHT = DT_RIGHT|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS,
		ENS_FORMAT_MULTI_LEFT = DT_LEFT|DT_VCENTER|DT_END_ELLIPSIS,
		ENS_FORMAT_MULTI_CENTER = DT_CENTER|DT_VCENTER|DT_END_ELLIPSIS,
		ENS_FORMAT_MULTI_RIGHT = DT_RIGHT|DT_VCENTER|DT_END_ELLIPSIS,
	};
	class CBasicSkinPaintMgr
	{
	public:
		CBasicSkinPaintMgr();
		virtual~CBasicSkinPaintMgr();
	public:
		static CBasicSkinPaintMgr* GetI();
	public:
		void InitPaint();
		void ClosePaint();
		Gdiplus::Font* GetDefFont();
		Gdiplus::Font* GetBlodFont();

		Gdiplus::Font* AddFont(const wchar_t* szId,const wchar_t* szFontName = NULL,int nFontSize = 12,FontStyle fontStyle = FontStyleRegular);
		Gdiplus::Font* GetFont(const wchar_t* szId);

		Gdiplus::StringFormat* AddFormat(UINT uFormat);
		Gdiplus::StringFormat* GetFormat(UINT uFormat);
		static void MakeStringFormat(StringFormat& format, UINT uFormat);
	public:
		Gdiplus::Font*			m_pDefFont;
		Gdiplus::Font*			m_pBlodFont;
		std::map<std::wstring,Gdiplus::Font*>	m_mFontList;
		std::map<UINT,Gdiplus::StringFormat*>	m_mFormatList;	
	protected:
		std::wstring			m_strFontName;
	};
}